// 云函数验证签名，此示例中以接受GET请求为例作演示
const crypto = require('crypto')
exports.main = async(event) => {
  console.log('event: ',event);
  const secret = 'eib88a640f8e5ad537ead28c6cff28ed1522a61f8fa9f18fe8381a69b9b2eafb4d' // 自己的密钥不要直接使用示例值，且注意不要泄露
  const hmac = crypto.createHmac('sha256', secret);
  
  let params = event.queryStringParameters
  const sign = params.sign
  delete params.sign
  const signStr = Object.keys(params).sort().map(key => {
    return `${key}=${params[key]}`
  }).join('&')
  
  hmac.update(signStr);
  
  if(sign!==secret){
    throw new Error('非法访问')
  }
  
  const {
    access_token,
    openid
  } = params
  const res = await uniCloud.getPhoneNumber({
  	provider: 'univerify',
    appid: '__UNI__B403FD7', // DCloud appid，不同于callFunction方式调用，使用云函数Url化需要传递DCloud appid参数
  	access_token: access_token,
  	openid: openid
  })
  // 返回手机号给自己服务器
  return res
}
